package com.dkd.manage.service.impl;
import java.util.List;

import com.dkd.common.utils.DateUtils;
import com.dkd.manage.domain.vo.TbRegionVo;
import com.dkd.manage.mapper.TbEmpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dkd.manage.mapper.TbRegionMapper;
import com.dkd.manage.domain.TbRegion;
import com.dkd.manage.service.ITbRegionService;
import org.springframework.transaction.annotation.Transactional;
/**
 * 区域管理Service业务层处理
 *
 * @author ruoyi
 * @date 2024-11-12
 */
@Service
public class TbRegionServiceImpl implements ITbRegionService {
    @Autowired
    private TbRegionMapper tbRegionMapper;
    @Autowired
    private TbEmpMapper tbEmpMapper;
    /**
     * 查询区域管理
     *
     * @param id 区域管理主键
     * @return 区域管理
     */
    @Override
    public TbRegion selectTbRegionById(Long id) {
        return tbRegionMapper.selectTbRegionById(id);
    }
    /**
     * 查询区域管理列表
     *
     * @param tbRegion 区域管理
     * @return 区域管理
     */
    @Override
    public List<TbRegion> selectTbRegionList(TbRegion tbRegion) {
        return tbRegionMapper.selectTbRegionList(tbRegion);
    }
    /**
     * 查询区域管理列表
     *
     * @param tbRegion 区域管理
     * @return 区域管理
     */
    @Override
    public List<TbRegionVo> selectTbRegionVoList(TbRegion tbRegion) {
        return tbRegionMapper.selectTbRegionVoList(tbRegion);
    }
    /**
     * 新增区域管理
     *
     * @param tbRegion 区域管理
     * @return 结果
     */
    @Override
    public int insertTbRegion(TbRegion tbRegion) {
        tbRegion.setCreateTime(DateUtils.getNowDate());
        return tbRegionMapper.insertTbRegion(tbRegion);
    }
    /**
     * 修改区域管理
     *
     * @param tbRegion 区域管理
     * @return 结果
     */
    //捕获异常，因为这里相当于操作两张表，需要两个sql同时成功了，这里需要添加一个事务
    //功能: 该注解用于声明当前方法需要在一个事务中执行。如果方法执行过程中抛出 Exception 类型的异常，事务将回滚，确保数据的一致性和完整性
    @Transactional(rollbackFor = Exception.class)
    @Override
    public int updateTbRegion(TbRegion tbRegion) {
        tbRegion.setUpdateTime(DateUtils.getNowDate());
        //返回更新的行数
        Integer result = tbRegionMapper.updateTbRegion(tbRegion);
        //更新员工表的区域信息
        tbEmpMapper.updateRegionNameByRegionId(tbRegion.getRegionName(), tbRegion.getId());
        return result;
    }
    /**
     * 批量删除区域管理
     *
     * @param ids 需要删除的区域管理主键
     * @return 结果
     */
    @Override
    public int deleteTbRegionByIds(Long[] ids) {
        return tbRegionMapper.deleteTbRegionByIds(ids);
    }
    /**
     * 删除区域管理信息
     *
     * @param id 区域管理主键
     * @return 结果
     */
    @Override
    public int deleteTbRegionById(Long id) {
        return tbRegionMapper.deleteTbRegionById(id);
    }
}
